/**
 * Lista.java
 * @author Jorge Lainfiesta 11142 Sección 20
 * @since 11/08/2012
 * @version 1
 * @param <E> Tipo de objetos que utiliza esta clase
 * Basado en código de Java Structures de Duan y Baily
 */
package list;

public interface Lista<E> {
     /**
     * @pre value no es nulo
     * @post value es añadido a la colección
     * @param value 
     */
    public void addFirst(E value);
    
    /**
     * @pre La collección no está vacía
     * @post retorna la referencia al siguiente objeto
     * @return El siguiente objeto en la colección
     */
    public E getFirst();
    /**
     * @pre La collección no está vacía
     * @post Quita un elemento de la collección
     * @return El elemento que se quitó
     */
    public E removeFirst();
    /**
     * @post Retorna el número de elementos en la colección
     * @return Numero de elementos de la lista
     */
    public int size();
    /**
     * @post True si y solo si la colección está vacía
     * @return True si la colección está vacía
     */
    public boolean isEmpty();
}
